/*******************************************************************************
 * @file fntable_export.c
 * @brief 导出函数表的库
 * @note 该库适用于MDK，如果使用gcc则需要修改ld文件
 *******************************************************************************
*/

#include "fntable_export.h"


/**
 * @brief 遍历函数表
 * @param starte 起始地址
 * @param end 结束地址
 */ 
void Fntable_Traverse(const void *start, const void *end)
{
    #ifdef DEBUG
    const fn_desc *p = (fn_desc *)start;
    #else
    const fn_t *p = (fn_t *)start;
    #endif // DEBUG

    while(++p < end)
    {
    #ifdef DEBUG
        if(p->fn_addr)
        {
            PRINT("%s\n", p->name);
            p->fn_addr();
        }
    #else
        if(p) (*p)();
    #endif // DEBUG
    }

}
